﻿using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using BLL;
using DevComponents.DotNetBar;

namespace GUI
{
    public partial class frmDiemDanh : Office2007Form
    {
        DataSet _ds = new DataSet();
        DataSet _dsMaMonHoc = new DataSet();
        private BOKy _ky;
        private BOSinhVien _student;
        private BOMonHoc _monHoc;
        private BODiemDanh _diemdanh;
        private BOLog _log;
        private DataGridViewCheckBoxColumn chk;
        public frmDiemDanh()
        {
            InitializeComponent();
        }

        private void frmDiemDanh_Load(object sender, EventArgs e)
        {
            _ky = new BOKy();
            _ds = _ky.Binding();
            cbxKy.DataSource = _ds.Tables[0];
            cbxKy.DisplayMember = "TenKy";
            cbxKy.ValueMember = "Ky";
        }

        private void cbxKy_SelectedIndexChanged(object sender, EventArgs e)
        {
            int ky = cbxKy.SelectedIndex + 1; //Index bắt đầu từ 0, Ky bắt đầu từ 1 nên phải cộng 1 mới là mã kỳ
            _ds = _ky.GetLopByKy(ky);
            cbxLop.DataSource = _ds.Tables[0];
            cbxKy.DisplayMember = "TenLop";
            cbxLop.ValueMember = "TenLop";

            _ds = _ky.GetMonHocByKy(ky);
            cbxMonHoc.DataSource = _ds.Tables[0];
            cbxMonHoc.DisplayMember = "TenMonHoc";
            cbxMonHoc.ValueMember = "TenMonHoc";
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Dispose();
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            loadGridDiemDanh();
        }

        private void loadGridDiemDanh()
        {

            dgvDiemDanh.Columns.Clear();
            //cbxKy.Enabled = false;
            //cbxLop.Enabled = false;
            //cbxMonHoc.Enabled = false;
            _student = new BOSinhVien();
            _monHoc = new BOMonHoc();
            _diemdanh = new BODiemDanh();

            //Lấy sinh viên của lớp được chọn ra để điểm danh
            string tenLop = (string) cbxLop.SelectedValue;
            _ds = _student.GetSVDiemDanh(tenLop);
            dgvDiemDanh.DataSource = _ds.Tables[0];

            //Lấy số trình và tổng số buổi học của từng môn
            string tenMonHoc = cbxMonHoc.SelectedValue.ToString();
            int soTrinh = _monHoc.GetSoTrinh(tenMonHoc);
            int tongSoBuoi = soTrinh * 3;

            //Lấy mã môn học của môn học được chọn
            _monHoc = new BOMonHoc();
            _dsMaMonHoc = _monHoc.LoadMaMonHoc(cbxMonHoc.SelectedValue.ToString());
            int mamonhoc = Convert.ToInt32(_dsMaMonHoc.Tables[0].Rows[0]["MaMonHoc"]);

            int soBuoiDaDiemDanh = _diemdanh.GetSoBuoi(tenLop, mamonhoc);
            for (int i = 0; i < tongSoBuoi; i++)
            {
                chk = new DataGridViewCheckBoxColumn();
               
                chk.Width = 30;

                if (i < soBuoiDaDiemDanh || i > soBuoiDaDiemDanh) 
                {
                    chk.ReadOnly = true;
                }
                if(soBuoiDaDiemDanh.Equals(tongSoBuoi))
                {
                    btnSave.Hide();
                }
                else
                {
                    btnSave.Show();
                }
                dgvDiemDanh.Columns.Add(chk);
                chk.Selected = true;
            }

            for (int r = 0; r < dgvDiemDanh.Rows.Count; r++)
            {
                //int index = dgvDiemDanh.Rows[i].Index;
                for (int buoi = 1; buoi <= soBuoiDaDiemDanh; buoi++)
                {
                    string maSV = dgvDiemDanh.Rows[r].Cells["MaSV"].Value.ToString();
                    int daDiemDanh = _diemdanh.GetDiemDanh(tenLop, maSV, mamonhoc, buoi);

                    DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell) dgvDiemDanh.Rows[r].Cells[(buoi + 4)];
                    if (daDiemDanh == 1)
                    {
                        cell.Value = true;
                    }
                    else

                    {
                        cell.Value = false;
                        cell.Style.BackColor = Color.Red;
                    }
                }
            }
            dgvDiemDanh.Columns[0].HeaderText = "Tên Sinh Viên";
            dgvDiemDanh.Columns[1].HeaderText = "Mã SV";
            dgvDiemDanh.Columns[2].HeaderText = "Ngày Sinh";
            dgvDiemDanh.Columns[3].HeaderText = "Nơi Sinh";
            dgvDiemDanh.Columns[4].HeaderText = "Ảnh SV";
            dgvDiemDanh.Columns[4].Visible = false;
            dgvDiemDanh.Columns[0].Width = 120;
            dgvDiemDanh.Columns[1].Width = 80;
        }

        int row;

        private void dgvDiemDanh_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            row = e.RowIndex;
            if(row >= 0)
            {
                byte[] imageData = (byte[])(_ds.Tables[0].Rows[row]["AnhSV"]);
                MemoryStream ms = new MemoryStream(imageData);
                picBox.SizeMode = PictureBoxSizeMode.StretchImage;
                picBox.Image = Image.FromStream(ms);
                ms.Close();
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            MessageBoxEx.EnableGlass = false;
            
            string tenLop = cbxLop.SelectedValue.ToString();
            //Lấy mã môn học của môn học được chọn
            _monHoc = new BOMonHoc();
            _dsMaMonHoc = _monHoc.LoadMaMonHoc(cbxMonHoc.SelectedValue.ToString());
            int mamonhoc = Convert.ToInt32(_dsMaMonHoc.Tables[0].Rows[0]["MaMonHoc"]);

            int soBuoiDaDiemDanh = _diemdanh.GetSoBuoi(tenLop, mamonhoc);
            int colIndex = soBuoiDaDiemDanh + 5;
            foreach(DataGridViewRow row in dgvDiemDanh.Rows)
            {
                int index = row.Index;
                string maSV = dgvDiemDanh.Rows[index].Cells[1].Value.ToString();

                bool chked = Convert.ToBoolean(row.Cells[colIndex].Value);
                if (chked)
                {
                    _diemdanh.InsertDiemDanh(tenLop, maSV, mamonhoc, 1, soBuoiDaDiemDanh + 1);
                }
                else
                {
                    _diemdanh.InsertDiemDanh(tenLop, maSV, mamonhoc, 0, soBuoiDaDiemDanh + 1);
                }
            }
            MessageBoxEx.Show("Lưu thành công !!!", "Lưu thông tin điểm danh", MessageBoxButtons.OK, MessageBoxIcon.Information);
            _log = new BOLog();
            _log.AddLog(Session.member.TenThanhVien, " điểm danh lớp " + cbxLop.SelectedValue + " môn " + cbxMonHoc.SelectedValue, DateTime.Now, "");
            //unCheckedAll();
            dgvDiemDanh.Columns.Clear();
            //btnOk.Enabled = true;
            cbxKy.Enabled = true;
            cbxLop.Enabled = true;
            cbxMonHoc.Enabled = true;
        }

        private void frmDiemDanh_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dr;
            MessageBoxEx.EnableGlass = false;
            dr = MessageBoxEx.Show("Bạn có thật sự muốn thoát ?", "Thông báo", MessageBoxButtons.YesNo,
                                   MessageBoxIcon.Question);
            if (dr == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    }

        //private void unCheckedAll()
        //{
        //    foreach (DataGridViewRow row in dgvDiemDanh.Rows)
        //    {
        //        int index = row.Index;
        //        chk.FalseValue = true;
        //        dgvDiemDanh.Rows[index].Cells[6].Value = "";
        //        dgvDiemDanh.Rows[index].Cells[6].Style.BackColor = Color.White;
        //    }
        //}
}